#ifndef NAME_H
#define NAME_H

#include <string>

#include "types.h"


//class to hold name/identifier information and to provice methodes of interfacing with it.
class Name
{
    public:
        //constructor. Assign type1.
        Name(std::string type);

        //destructor. Does nothing.
        ~Name();

        //Set name/identifier's Id.
        void SetId(UINT id);

        //Get name/identifier's Id.
        UINT GetId() const;

        //Set pointer to name/identifier in file.
        void SetPointer(UINT pointer);

        //Get pointer to name/identifier in file.
        UINT GetPointer() const;

        //Get type1.
        std::string GetType() const;

        //Set type2.
        void SetType2(std::string type2);

        //Get type2.
        std::string GetType2() const;

        //Set type3.
        void SetType3(std::string type3);

        //Get type3.
        std::string GetType3() const;

        //Set name.
        void SetName(std::string name);

        //Get name.
        std::string GetName() const;

        //Set new name.
        void SetNewName(std::string newName);

        //Get new name.
        std::string GetNewName() const;

        //Get name size.
        UINT GetNameSize() const;

        //Get new name size.
        UINT GetNewNameSize() const;

    private:
        //Id of name/identifier.
        UINT itsId;

        //Size of name/identifier
        UINT itsNameSize;

        //size of new name/identifier
        UINT itsNewNameSize;

        //Pointer to name/identifier's location in file.
        UINT itsPointer;

        //type1 string.
        std::string itsType;

        //type2 string.
        std::string itsType2;

        //type3 string.
        std::string itsType3;

        //current name/identifier
        std::string itsName;

        //new name/identifier
        std::string itsNewName;
};

#endif // NAME_H
